]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Look at current mouse position for dropping
authorMaxim Ermilov <zaspire@rambler.ru>
Mon, 8 Mar 2010 22:50:49 +0000 (01:50 +0300)
committerMaxim Ermilov <zaspire@rambler.ru>
Mon, 8 Mar 2010 22:53:27 +0000 (01:53 +0300)
Previously we used the top-left corner which was not intuitive,
particularly when dragging partially opaque actors.
https://bugzilla.gnome.org/show_bug.cgi?id=607821

js/ui/dnd.js

index 9188cadeeb63c2ea8620388d40aebd7ea9210b19..717ea18bd6853ea9ebaba058a5403ebe4eb25d75 100644 (file)
@@ -59,7 +59,7 @@ _Draggable.prototype = {
 
         return false;
     },
-    
+
     _grabActor: function() {
         Clutter.grab_pointer(this.actor);
         this._onEventId = this.actor.connect('event',
@@ -220,8 +220,7 @@ _Draggable.prototype = {
             // we have to temporarily hide this._dragActor.
             this._dragActor.hide();
             let target = this._dragActor.get_stage().get_actor_at_pos(Clutter.PickMode.ALL,
-                                                                      stageX + this._dragOffsetX,
-                                                                      stageY + this._dragOffsetY);
+                                                                      stageX, stageY);
             this._dragActor.show();
             while (target) {
                 if (target._delegate && target._delegate.handleDragOver) {
@@ -230,8 +229,8 @@ _Draggable.prototype = {
                     // We can check the return value of the function and break the loop if it's true if we don't want
                     // to continue checking the parents.
                     target._delegate.handleDragOver(this.actor._delegate, this._dragActor,
-                                                    (stageX + this._dragOffsetX - targX) / target.scale_x,
-                                                    (stageY + this._dragOffsetY - targY) / target.scale_y,
+                                                    (stageX - targX) / target.scale_x,
+                                                    (stageY - targY) / target.scale_y,
                                                     event.get_time());
                 }
                 target = target.get_parent();